package cn.tedu._11security.security;

import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

public class UserDetailsServiceImpl implements UserDetailsService {


    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        /*
        1.用户访问：/api/private/hello;
        2.该请求需要认证，所以框架跳转到登录页面
        3.用户输入用户名和密码，点击登录；
        4.框架接收该请求，框架本身拿到了用户名和密码；
        5.框架调用loadUserByUsername方法，把username给开发者，passwoed自己保存；
        6.开发者根据用户名到数据库中查询该用户在数据库的密码；
        7.开发者将数据库中的密码，给到框架，由框架进行认证判断；
        8.如果认证失败，则由框架返回用户名或密码错误，直接结束
        9.认证成功，进入到鉴权的环节；
          9.1.开发者根据用户名到数据库中查询该用户的权限[用户->角色->权限]；
          9.2.直接给到框架，由框架进行判断[鉴权]
         */

        return User.withUsername(username)
                .password("{noop}123456")//数据库中查询到的密码
                .authorities("sys:private:view","sys:private:egit")//数据库中查询到的权限
                .build();








    }
}
